package com.heima.article.listener;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.heima.article.service.ApArticleConfigService;
import com.heima.common.constants.WmNewsMessageConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

import java.util.Map;

@Component
@Slf4j
//自定义一个监听器，主要功能是监听Kafka中的特定主题消息，并根据接收到的消息内容更新文章的配置信息
//这个是是kafka的一个消费者类，用于监听来自kafka指定主题的生产者发送的指定消息，并执行指定方法
public class ArticleIsDownListener {

	@Autowired
	//声明了一个私有的ApArticleConfigService对象，这个对象是用于处理文章配置的服务
	private ApArticleConfigService apArticleConfigService;

	//@KafkaListener: 这个Spring Kafka注解用于声明一个方法，该方法可以作为消息监听器，它会监听指定主题的消息
	//定了监听的主题是WmNewsMessageConstants类中的WM_NEWS_UP_OR_DOWN_TOPIC常量
	//定义了一个名为onMessage的方法，该方法会在接收到消息时被调用
	@KafkaListener(topics = WmNewsMessageConstants.WM_NEWS_UP_OR_DOWN_TOPIC)
	public void onMessage(String message){
		if (StringUtils.isNotBlank(message)){
			//使用JSON.parseObject方法将字符串消息解析为一个Map对象
			Map map= JSON.parseObject(message,Map.class);
			//调用ApArticleConfigService中的updateByMap方法，传入解析后的Map对象
			apArticleConfigService.updateByMap(map);
		}
	}
}
